cmake_minimum_required(VERSION 3.0)
project(bzip2 C)

if(CMAKE_BUILD_TYPE STREQUAL Debug)
    add_definitions(-DBZ_DEBUG) # enable extra assertions
endif()

set(LIBBZ2_SOURCES
    blocksort.c
    huffman.c
    crctable.c
    randtable.c
    compress.c
    decompress.c
    bzlib.c)

add_library(libbz2 ${LIBBZ2_SOURCES})
set_target_properties(libbz2 PROPERTIES
    ARCHIVE_OUTPUT_NAME bz2 # required for FindBzip2 to work
    DEBUG_POSTFIX d)
if(BUILD_SHARED_LIBS)
    target_compile_definitions(libbz2 PRIVATE -DBZ_BUILD_DLL)
endif()

if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
    add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
    add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
endif()

install(TARGETS libbz2
    RUNTIME DESTINATION bin
    ARCHIVE DESTINATION lib
    LIBRARY DESTINATION lib)

if(NOT BZIP2_SKIP_TOOLS)
    add_executable(bzip2 bzip2.c ${LIBBZ2_SOURCES})
    add_executable(bzip2recover bzip2recover.c ${LIBBZ2_SOURCES})
    install(TARGETS bzip2 bzip2recover DESTINATION tools)
endif()

if(NOT BZIP2_SKIP_HEADERS)
    install(FILES bzlib.h DESTINATION include)
endif()
